/****************************************
Table A.26
*****************************************/

* Load Census Data Cleaned and Collapsed
use "$dir/Data/Final/final_collapsed_scommonq.dta", clear

gen i = birthstatefip
gen t = (birthdecade/10) + 1 // someone who is 10 when ban is put in place is treated (time 0)
gen Ei = floor(year_of_ban/10) 	// decade when unit is first treated
gen K = t-Ei 			// "relative time" num decades since treated (could be missing if never-treated)


forvalues l = 1/6 {
	gen A`l'event = K==-`l'
}

forvalues l = 0/6 {
	gen P`l'event = K==`l'
}


gen insample6treat = abs(K) <= 6 & K != .


* Interaction treatment vars
forvalues pre = 6(-1)2 {
	cap n gen cmH_Pre`pre' = cmH * A`pre'event
}

forvalues post = 0/6 {
	cap n gen cmH_Post`post' = cmH * P`post'event
}

forvalues x = 0/6 {
	cap label var cmH_Pre`x' "Pre `x'"
	cap label var cmH_Post`x' "Post `x'"
}


replace Ei = . if cmH == 0 /* Treating low CM surnames as never having faced a ban */
gen nevertreated = Ei == . /* this includes low CM surnames and those that never faced a ban */

drop if year_of_ban > 1940 /* this drops all states that banned after 1940 or never banned because they
have year of ban value missing, so control group is low cousin marriage surnames in states that banned
by 1940 */


keep if insample6treat == 1

**************************************************
** Transforming and labelling outcome variables **
**************************************************

* Transformations
gen ln_citypop = ln(citypop)
gen ln_occscore = ln(occscore)


* Labels
label var birthdecade "Birth decade"
label var cmH ">10% cousin marriage rate (-1858)"
label var birthstatefip "Birth state"
label var resstatefip "Residence state"
label var year "Census year"
label var count_dor "Num census individuals in cell"
label var occscore "Occscore"
label var ln_occscore "Income (log occscore)"
label var citypop "City size"
label var ln_citypop "Urbanization (log residence pop'n)"
label var scom_quartile "Surname commonness quartile"

foreach v of varlist(ln_occscore_nm-ln_citypop_nm){
	label var `v' "Number of individuals with non-missing outcome in cell"
}

compress 

/**************************************
Table A.26
**************************************/

eststo clear

* Drop Bottom 25% *
eventstudyinteract ln_citypop ///
	cmH ///
    cmH_P* ///
	[aweight = ln_citypop_nm] if scom_quartile != 1, absorb(i.i##i.t i.year  i.i##i.cmH) vce(cluster i) ///
	cohort(Ei) control_cohort(nevertreated)
	
 	matrix b_iw = e(b_iw) // Save the results for table output
 	matrix V_iw = e(V_iw)
	capture matrix V_iw = diag(e(V_iw))
 	erepost b = b_iw V = V_iw // ssc install erepost
 	esttab
	eststo A1
    sum ln_citypop [fw = ln_citypop_nm] if e(sample) == 1
	local obs1 = r(N)
    su ln_citypop [aw = ln_citypop_nm] if e(sample) == 1
    local meanA = string(round(r(mean), .01))
 
 
eventstudyinteract ln_occscore ///
	cmH ///
    cmH_P* ///
	[aweight = ln_occscore_nm] if scom_quartile != 1, absorb(i.i##i.t i.year i.i##i.cmH) vce(cluster i) ///
	cohort(Ei) control_cohort(nevertreated)
	
 	matrix b_iw = e(b_iw) // Save the results for table output
 	matrix V_iw = e(V_iw)
	capture matrix V_iw = diag(e(V_iw))
 	erepost b = b_iw V = V_iw // ssc install erepost
 	esttab
	eststo A2
	sum ln_occscore [fw = ln_occscore_nm] if e(sample) == 1
	local obs2 = r(N)
    su ln_occscore [aw = ln_occscore_nm] if e(sample) == 1
    local meanB = string(round(r(mean), .01))
 


* Drop Top 25% *
eventstudyinteract ln_citypop ///
	cmH ///
    cmH_P* ///
	[aweight = ln_citypop_nm] if scom_quartile != 4, absorb(i.i##i.t i.year  i.i##i.cmH) vce(cluster i) ///
	cohort(Ei) control_cohort(nevertreated)
	
 	matrix b_iw = e(b_iw) // Save the results for table output
 	matrix V_iw = e(V_iw)
	capture matrix V_iw = diag(e(V_iw))
 	erepost b = b_iw V = V_iw // ssc install erepost
 	esttab
	eststo A3
    sum ln_citypop [fw = ln_citypop_nm] if e(sample) == 1
	local obs3 = r(N)
    su ln_citypop [aw = ln_citypop_nm] if e(sample) == 1
    local meanC = string(round(r(mean), .01))
 
 
eventstudyinteract ln_occscore ///
	cmH ///
    cmH_P* ///
	[aweight = ln_occscore_nm] if scom_quartile != 4, absorb(i.i##i.t i.year i.i##i.cmH) vce(cluster i) ///
	cohort(Ei) control_cohort(nevertreated)
	
 	matrix b_iw = e(b_iw) // Save the results for table output
 	matrix V_iw = e(V_iw)
	capture matrix V_iw = diag(e(V_iw))
 	erepost b = b_iw V = V_iw // ssc install erepost
 	esttab
	eststo A4
	sum ln_occscore [fw = ln_occscore_nm] if e(sample) == 1
	local obs4 = r(N)
    su ln_occscore [aw = ln_occscore_nm] if e(sample) == 1
    local meanD = string(round(r(mean), .01))
 

estout A1 A2 A3 A4 using "$dir/Output/TablesFigures/results_droptop.tex", style(tex) replace ///
    keep(cmH_*) ///
	cells(b(star fmt(%9.4f)) se(par)) ///
	nolabel collabels(none) mlabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) ///
	varlabels(cmH_Pre6 "-6" cmH_Pre5 "-5" ///
	cmH_Pre4 "-4" cmH_Pre3 "-3" ///
	cmH_Pre2 "-2" cmH_Post0 "0" ///
	cmH_Post1 "1" cmH_Post2 "2" ///
	cmH_Post3 "3" cmH_Post4 "4" ///
	cmH_Post5 "5" cmH_Post6 "6")

local tex " \\ \hline"
local tex "`tex' Observations & `obs1' & `obs2' & `obs3' & `obs4' \\"
local tex "`tex' Mean Dep. Var & `meanA' & `meanB' & `meanC' & `meanD'  \\"
local tex "`tex' State X Birth Decade FE & Yes & Yes & Yes & Yes \\"
local tex "`tex' State X High CM F.E. & Yes & Yes & Yes & Yes  \\"
local tex "`tex' Census year F.E. & Yes & Yes & Yes & Yes \\"
local tex "`tex' High CM X Birth Decade Trends & Yes & Yes & Yes & Yes \\"
local tex "`tex' \multicolumn{3}{p{8cm}}{\tiny \textit{Notes:} Standard errors clustered at state-level."
local tex "`tex' *** p<0.01, ** p<0.05, * p<0.1.} \\ \end{tabular} }"
	
esttab A1 A2 A3 A4 using "$dir/Output/TablesFigures/results_droptopa.tex", style(tex) replace booktabs ///
	d(*) nolabel collabels(none) noobs postfoot("`tex'") nonum ///
	mtitles("(1)" "(2)" "(3)" "(4)") ///
	mgroups("Urbanization (log residence pop'n')" "Occupational Income (Log)" "Urbanization (log residence pop'n')" "Occupational Income (Log)", ///
	pattern(1 1) ///
	prefix(\multicolumn{@span}{c}{) suffix(}) span erepeat(\cmidrule(lr){@span}))
	